package com.wangct.zzzpro;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import com.wangct.util.DBwork;
import com.wangct.util.MD5encrypt;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;

public class LoginActivity extends Activity implements OnClickListener {

	private final String TAG = "Login---->";
	EditText useredit, userpass;
	Boolean isRememberPassword = true;// 是否记住密码 默认记住
	HttpClient httpClient;
	DBwork database;//我自己封装的操作数据库对象 哈哈
	Handler handler = new Handler() {
		public void handleMessage(Message msg) {
			if (msg.what == 0x123) {
				// 获取服务器返回数据并且show出来
				showmsg("获取到服务器返回的数据：" + msg.obj.toString());
			}
			if (msg.what == 0x456) {
				finish();// 关闭当前登录页面

			}
		}
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_login);
		findViewById();
		// 在这里打开或者创建数据库
		  database = new DBwork(getApplicationContext());
		// 创建或者打开数据库
		database.creatDabase("two");
		// 尝试创建表
		if (database.creatTabDb()) {
			// 创建表成功 说明第一次创建表 也就是数据库内没有内容 那就不要管它啦

		
		} else {
			// 创建表失败 说明表已存在 应该执行判断数据库里有多少条数据 返回数据查询
			// 创建表失败 那就是有数据 因该取出来 显示在编辑框中
			// 获取Cursor对象
			Cursor cursor = database.getCoursor();
			// 看看表中有多少条数据
			int i = cursor.getCount();

			// 判断如果没有数据 那就不管了
			if (i > 0) {
				// 判断如果存在数据 那就进行显示
				// 遍历数据库内容
				while (cursor.moveToNext()) {//***************************************
					Log.d(TAG, "cursor的数据 :" + cursor.getString(0));
					Log.d(TAG, "cursor的数据User :" + cursor.getString(1));
					Log.d(TAG, "cursor的数据Password :" + cursor.getString(2));
					useredit.setText(""+cursor.getString(1));
					userpass.setText(""+cursor.getString(2));
					
				}
			} else {
				// 如果没有数据 那就不管了
			}
			

		}

		// 创建DefaultHttpClient对象
		httpClient = new DefaultHttpClient();

	}

	public void findViewById() {
		ImageView logo = (ImageView) findViewById(R.id.login_logo);// 用户头像
		useredit = (EditText) findViewById(R.id.loginaccount);// 用户账户输入框
		ImageView login_more = (ImageView) findViewById(R.id.login_more);// 更多账户
		userpass = (EditText) findViewById(R.id.loginpassword);// 密码输入框
		ToggleButton isshowpass = (ToggleButton) findViewById(R.id.isShowPassword);// 是否显示密码的滑动按钮
		Button loginbn = (Button) findViewById(R.id.login_button);// 登陆按钮
		TextView find_password = (TextView) findViewById(R.id.find_password);// 找回密码
		TextView login_otherpassword = (TextView) findViewById(R.id.login_otherpassword);// 合作网站登陆
		Button regist = (Button) findViewById(R.id.regist);// 注册按钮
		Button lookmynet = (Button) findViewById(R.id.lookmynet);// 点击访问我们的网站按钮

		// 绑定点击事件
		login_more.setOnClickListener(this);
		loginbn.setOnClickListener(this);
		find_password.setOnClickListener(this);
		login_otherpassword.setOnClickListener(this);
		regist.setOnClickListener(this);
		lookmynet.setOnClickListener(this);

		// 密码框记住按钮
		isshowpass.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			@Override
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

				if (isChecked) {
					// 明文显示
					// userpass.setInputType(0x81);
					// ／／记住密码
					isRememberPassword = isChecked;
					showmsg("记住密码", 0);
				} else {
					// 隐藏
					// userpass.setInputType(0x90);
					// 取消记住密码
					showmsg("取消记住密码", 0);
					isRememberPassword = isChecked;
				}
			}
		});

	}

	// 在这里处理登陆信息
	void doLogin() {

		// 判断用户账户输入
		if (useredit.getText().toString().equals("")) {
			showmsg("请输入账户");
		} else if (userpass.getText().toString().equals("")) {
			showmsg("请输入密码");
		} else {
			// 这里表示输入没有问题

			// 获取用户输入的用户名、密码
			new Thread() {
				@Override
				public void run() {
					try {
						HttpPost post = new HttpPost("http://115.28.193.103/foo/login.jsp");// ③
						// 如果传递参数个数比较多的话可以对传递的参数进行封装
						List<NameValuePair> params = new ArrayList<NameValuePair>();
						params.add(new BasicNameValuePair("name", useredit.getText().toString()));
						params.add(new BasicNameValuePair("pass", userpass.getText().toString()));
						// 设置请求参数
						post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
						// 发送POST请求
						HttpResponse response = httpClient.execute(post); // ④

						// 发送信息 关闭获取返回服务器返回的值
						Message msg2 = new Message();
						msg2.what = 0x123;
						msg2.obj = response.getStatusLine().getStatusCode();
						handler.sendMessage(msg2);

						// 如果服务器成功地返回响应
						if (response.getStatusLine().getStatusCode() == 200) {
							// 返回信息
							String msg = EntityUtils.toString(response.getEntity()).trim();

							Looper.prepare();

							// 提示登录信息
							if (msg.equals("登陆成功")) {
								
								// 发送信息 关闭这个activity
								Message msg3 = new Message();
								msg3.what = 0x456;
								handler.sendMessage(msg3);
								
								// 在这里用数据库储存密码
								//**************************************************
								if (isRememberPassword) {
									// 记住密码 将账户密码插入数据库
									database.insertData(""+useredit.getText().toString(), ""+userpass.getText().toString());
								} else {
									// 不记住密码
									database.insertData(""+useredit.getText().toString(), "");
								}
								
								
								
								

								// 这里表示 登陆成功
								showmsg("您输入的账户是:" + useredit.getText().toString() + "\n密码是:"
										+ userpass.getText().toString());
								// 这里验证成功打开主界面
								Intent intent = new Intent(LoginActivity.this, MainActivity.class);
								startActivity(intent);

							} else {
								// 这里表示登陆失败
								Toast.makeText(LoginActivity.this, msg, Toast.LENGTH_SHORT).show();
							}
							Looper.loop();
						}
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}.start();
		}
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		finish();
		Log.e(TAG, "在这里成功调用了ondestry方法");
		database.dataBaseClose();//调用了关闭数据库方法
		super.onDestroy();
	}

	public void showmsg(String msg) {
		Toast.makeText(getApplicationContext(), "" + msg, 0).show();
		Log.d(TAG, msg);

	}

	public void showmsg(String msg, int time) {
		Toast.makeText(getApplicationContext(), "" + msg, time).show();

	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {

		case R.id.login_more:
			showmsg("点击了更多账户");
			break;

		case R.id.login_button:
			// showmsg("点击了登陆按钮");
			doLogin();// 处理登陆
			break;
		case R.id.find_password:
			showmsg("点击了找回密码");
			break;

		case R.id.login_otherpassword:
			showmsg("点击了合作网站登录");

			break;

		case R.id.regist:
			showmsg("点击了注册按钮");

			// 在这里测试MD5加密算法
			// MD5encrypt md5 = new MD5encrypt();
			// showmsg(md5.MD5("laskdjflaskdjf"));

			// // 在这里测试 数据库插入
			// DBwork database = new DBwork(getApplicationContext());
			// // 创建或者打开数据库
			// database.creatDabase("two");
			//
			// if (database.creatTabDb()) {
			// // 创建表成功 说明第一次创建表 也就是数据库内没有内容
			// if (isRememberPassword) {
			// // 记住密码
			// } else {
			// // 不记住密码
			// }
			// } else {
			// // 创建表失败 说明表已存在
			// // 获取Cursor对象
			// Cursor cursor = database.getCoursor();
			// // 遍历数据库内容
			// while (cursor.moveToNext()) {
			// Log.d(TAG, "cursor的数据 :" + cursor.getString(0));
			// Log.d(TAG, "cursor的数据 :" + cursor.getString(1));
			// Log.d(TAG, "cursor的数据 :" + cursor.getString(2));
			// }
			//
			// }
			//
			// database.insertData("hello", "nihao");

			break;
		case R.id.lookmynet:
			showmsg("点击访问网站");
			// 打开浏览器页面
			Intent intentBro = new Intent();
			intentBro.putExtra("url", "http://www.qq.com");
			intentBro.setClass(getApplicationContext(), MyWebViewAct.class);
			startActivity(intentBro);

			break;

		default:
			break;
		}

	}

}
